package com.ui;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;

import com.pregunta.Pregunta;
import com.util.Constantes;
import com.util.Escritora;
import com.util.Lectora;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.ArrayList;

import javax.swing.JRadioButton;
import javax.swing.JCheckBox;


public class WbVCuestionario extends JFrame {
	

	Lectora lectora = new Lectora();
	ArrayList<Pregunta> preguntas = new ArrayList<Pregunta>();
	int noPregunta=0;
	JFileChooser jfc = new JFileChooser();
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JLabel lblTipo;
	private JRadioButton rdbtnA;
	private JRadioButton rdbtnB;
	private JRadioButton rdbtnC;
	private JRadioButton rdbtnD;
	private JCheckBox chckbxA;
	private JCheckBox chckbxB;
	private JCheckBox chckbxC;
	private JCheckBox chckbxD;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					WbVCuestionario frame = new WbVCuestionario();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public WbVCuestionario() {
		
		preguntas = lectora.DeSerializar(Constantes.CUESTIONARIO_ARCHIVO_TEMPORAL_RUTA);
		
		
		setTitle("..::Visualizador Cuestionario::..");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 578, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		final JLabel lblPregunta = new JLabel("pregunta");
		
		JLabel lblRespuesta = new JLabel("respuesta");
		
		JButton btnSiguiente = new JButton("Siguiente");
		btnSiguiente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				InvisibilizaOpciones();
				Pregunta p = preguntas.get(noPregunta);
				
				if(noPregunta < preguntas.size()){
					lblPregunta.setText(p.getPregunta());
					lblTipo.setText(p.getTipoPregunta());
					
					
					if(Constantes.SC_OPCIONES.equalsIgnoreCase(p.getTipoPregunta()))
					{
						int numR = p.getRespuestaO().length;
						if(numR>=1){
							rdbtnA.setVisible(true);
							rdbtnA.setText(p.getRespuestaO()[0]);
						}
						if(numR>=2){
							rdbtnB.setVisible(true);
							rdbtnB.setText(p.getRespuestaO()[1]);
						}
						if(numR>=3){
							rdbtnC.setVisible(true);
							rdbtnC.setText(p.getRespuestaO()[2]);							
						}
						if(numR==4){
							rdbtnD.setVisible(true);
							rdbtnD.setText(p.getRespuestaO()[3]);						
						}	
							
							
							
					}else
						if(Constantes.SC_MULTIPLE.equalsIgnoreCase(p.getTipoPregunta()))
						{
							
							int numR = p.getRespuestaM().length;
							if(numR>=1){
								chckbxA.setVisible(true);
								chckbxA.setText(p.getRespuestaM()[0]);
							}
							if(numR>=2){
								chckbxB.setVisible(true);
								chckbxB.setText(p.getRespuestaM()[1]);
							}
							if(numR>=3){
								chckbxC.setVisible(true);
								chckbxC.setText(p.getRespuestaM()[2]);							
							}
							if(numR==4){
								chckbxD.setVisible(true);
								chckbxD.setText(p.getRespuestaM()[3]);						
							}	
														
						}
					
					
					noPregunta++;
				}
			}
		});
		
		JButton btnAnterior = new JButton("Anterior");
		btnAnterior.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(noPregunta>0){
					noPregunta--;
					InvisibilizaOpciones();
					Pregunta p = preguntas.get(noPregunta);
					
					lblPregunta.setText(p.getPregunta());
					lblTipo.setText(p.getTipoPregunta());
					
					
					if(Constantes.SC_OPCIONES.equalsIgnoreCase(p.getTipoPregunta()))
					{
						int numR = p.getRespuestaO().length;
						if(numR>=1){
							rdbtnA.setVisible(true);
							rdbtnA.setText(p.getRespuestaO()[0]);
						}
						if(numR>=2){
							rdbtnB.setVisible(true);
							rdbtnB.setText(p.getRespuestaO()[1]);
						}
						if(numR>=3){
							rdbtnC.setVisible(true);
							rdbtnC.setText(p.getRespuestaO()[2]);							
						}
						if(numR==4){
							rdbtnD.setVisible(true);
							rdbtnD.setText(p.getRespuestaO()[3]);						
						}	
							
							
							
					}else
						if(Constantes.SC_MULTIPLE.equalsIgnoreCase(p.getTipoPregunta()))
						{
							
							int numR = p.getRespuestaM().length;
							if(numR>=1){
								chckbxA.setVisible(true);
								chckbxA.setText(p.getRespuestaM()[0]);
							}
							if(numR>=2){
								chckbxB.setVisible(true);
								chckbxB.setText(p.getRespuestaM()[1]);
							}
							if(numR>=3){
								chckbxC.setVisible(true);
								chckbxC.setText(p.getRespuestaM()[2]);							
							}
							if(numR==4){
								chckbxD.setVisible(true);
								chckbxD.setText(p.getRespuestaM()[3]);						
							}	
														
						}					
				}
				
			}
		});
		
		final JButton btnFinalizar = new JButton("Finalizar");
		btnFinalizar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int respuesta = jfc.showSaveDialog(btnFinalizar);
				FileFilter filtro = new FileNameExtensionFilter("Cuestionarios","srv");
				jfc.setFileFilter(filtro);
				if(respuesta==JFileChooser.APPROVE_OPTION)
				{
					System.out.println("guardar!!!");
					Escritora es = new Escritora();
					es.Serializar(preguntas, jfc.getSelectedFile().getAbsolutePath());
				}
			
				//dispose();
			}
		});
		
		lblTipo = new JLabel("tipo");
		
		rdbtnA = new JRadioButton("A");
		rdbtnA.setVisible(false);
		
		rdbtnB = new JRadioButton("B");
		rdbtnB.setVisible(false);
		
		rdbtnC = new JRadioButton("C");
		rdbtnC.setVisible(false);
		
		rdbtnD = new JRadioButton("D");
		rdbtnD.setVisible(false);
		
		chckbxA = new JCheckBox("A");
		chckbxA.setVisible(false);
		
		chckbxB = new JCheckBox("B");
		chckbxB.setVisible(false);
		
		chckbxC = new JCheckBox("C");
		chckbxC.setVisible(false);
		
		chckbxD = new JCheckBox("D");
		chckbxD.setVisible(false);
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addContainerGap()
					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
						.addGroup(gl_contentPane.createSequentialGroup()
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(chckbxA)
								.addComponent(chckbxB)
								.addComponent(chckbxC)
								.addComponent(chckbxD))
							.addPreferredGap(ComponentPlacement.RELATED)
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(rdbtnB)
								.addComponent(rdbtnA)
								.addComponent(rdbtnC)
								.addComponent(rdbtnD)))
						.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(lblPregunta)
								.addComponent(lblRespuesta))
							.addPreferredGap(ComponentPlacement.RELATED, 407, Short.MAX_VALUE)
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(btnSiguiente)
								.addComponent(btnAnterior)))
						.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
							.addComponent(lblTipo)
							.addPreferredGap(ComponentPlacement.RELATED, 443, Short.MAX_VALUE)
							.addComponent(btnFinalizar)))
					.addContainerGap())
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addGap(17)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblPregunta)
						.addComponent(btnSiguiente))
					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
						.addGroup(gl_contentPane.createSequentialGroup()
							.addGap(18)
							.addComponent(lblRespuesta))
						.addGroup(gl_contentPane.createSequentialGroup()
							.addPreferredGap(ComponentPlacement.RELATED)
							.addComponent(btnAnterior)))
					.addGap(18)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(rdbtnA)
						.addComponent(chckbxA))
					.addPreferredGap(ComponentPlacement.RELATED)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(rdbtnB)
						.addComponent(chckbxB))
					.addPreferredGap(ComponentPlacement.RELATED)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(rdbtnC)
						.addComponent(chckbxC))
					.addPreferredGap(ComponentPlacement.RELATED)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(rdbtnD)
						.addComponent(chckbxD))
					.addPreferredGap(ComponentPlacement.RELATED, 36, Short.MAX_VALUE)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnFinalizar)
						.addComponent(lblTipo))
					.addContainerGap())
		);
		contentPane.setLayout(gl_contentPane);
		ButtonGroup respuestasOpciones = new ButtonGroup();
		respuestasOpciones.add(rdbtnA);
		respuestasOpciones.add(rdbtnB);
		respuestasOpciones.add(rdbtnC);
		respuestasOpciones.add(rdbtnD);
	}
	
	public void InvisibilizaOpciones(){
		rdbtnA.setVisible(false);
		rdbtnB.setVisible(false);
		rdbtnC.setVisible(false);
		rdbtnD.setVisible(false);
		chckbxA.setVisible(false);
		chckbxB.setVisible(false);
		chckbxC.setVisible(false);
		chckbxD.setVisible(false);
				
	}
	
	
}
